#include <a_samp>
//Colors
#define COLOR_GREEN 0x008000FF
#define COLOR_ORANGE 0xFF8000FF
#define COLOR_LIGHTBLUE 0x00BFFFFF
#define COLOR_PINK 0xFF80C0FF
//Timers
#define INFECTION_TIME 30000
#define WARMUP_TIME 70000
//Dev Shit
#define TESTING 1

forward Game_Start();
forward Game_Warmup();
forward Game_Zombie();
forward GameModeExitFunc();


enum Info
{
   AdminLevel,
   Score,
   Infected,
   Float:PosX,
   Float:PosY,
   Float:PosZ,
   Float:PosA,
};

new Plr[MAX_PLAYERS][Info];
new Float:x, Float:y, Float:z, Float:a;
new fstring[256];

new Zombies;
new Humans;
new Players;

new WarmupTimer;
new InfectionTimer;


 new Float:HumanSpawn[][4] =
 {
  // Positions, (X, Y, Z and Facing Angle)
    {221.5132,1860.5977,13.1470,2.1131},
    {213.8583,1860.7201,13.1406,2.1131},
    {217.3335,1857.8630,13.1406,9.6331},
    {213.4945,1854.1865,12.8745,355.8463},
    {223.1789,1853.9337,12.8412,2.7398},
    {206.2497,1860.9045,13.1406,2.1131}
 };

main()
{
	print("\n----------------------------------");
	print(" Zombies Gamemode, By T-Zombie");
	print("----------------------------------\n");
}
//####################################
//######## Custom FUNCTIONS ##########
//####################################
CheckPlayers()
{
    
    print("Checking No of Players");
	Players = 0;
	Humans = 0;
	Zombies = 0;
	print("Reset No Of Players");
	new i = 0;
	while (i != MAX_PLAYERS)
	{
	  	if (Plr[i][Infected] != -1)
	    {
		    if (Plr[i][Infected] == 1)
		    {
		        Zombies++;
		    }
		    else if (Plr[i][Infected] == 0)
		    {
		        Humans++;
		    }
	        Players++;
	    }
 		i++;
	}
	print("Calculated No Of Players");
	print("###~~Player Information~~###");
	format(fstring, sizeof(fstring), "Players: %d", Players);
	print(fstring);
	format(fstring, sizeof(fstring), "Humans: %d", Humans);
	print(fstring);
	format(fstring, sizeof(fstring), "Zombies: %d", Zombies);
	print(fstring);
}


public Game_Start()
{
	print("Starting a New Round");
	
   	CheckPlayers();

	print("Making Everyone Human");
    new i;
   	while (i < MAX_PLAYERS)
	{
    	makeHuman(i);
   		i++;
    }
 	print("Stop the Timers");
    Timers_Stop();
  	print("Start the infection Timer");
	InfectionTimer = SetTimer("Game_Zombie",INFECTION_TIME,false);
}

public Game_Zombie()
{
	if (Players < 1)
	{
		print("Players Required to make a zombie.. Skipping");
	}
	else
	{
	    print("Making the alpha Zombie.");
	    GameTextForAll("~w~Someone is a Zombie! Run and Hide!",5000,5);
	    new newZombie = 0;
		while (newZombie != 1)
		{
			new zombie = random(MAX_PLAYERS);
			if (Plr[zombie][Infected] == 0)
			{
				SendClientMessage(zombie, 0xE60000FF, "You Are The Zombie, Eat Brains To Win!");
				GetPlayerPos(zombie,x,y,z);
				GetPlayerFacingAngle(zombie,a);
				Plr[zombie][PosX] = x;
				Plr[zombie][PosY] = y;
				Plr[zombie][PosZ] = z;
				Plr[zombie][PosA] = a;
				makeZombie(zombie);
				newZombie = 1;
			}
		}
	}
}
public Game_Warmup()
{
print("Starting the Warmup");
#if defined TESTING
    print("Test Mode. No Warmup");
    GameTextForAll("~w~TESTING MODE !!! Starting Anyway.",10000,5);
    Game_Start();
#else
	if (Players > 2)
	{
	    print("Enough Players To Start");
		Game_Start();
	    GameTextForAll("~w~New Round !!!",WARMUP_TIME,5);
    }
    else
    {
        print("Not Enough Players");
    	GameTextForAll("~w~Not Enough Players Still Warming Up",10000,5);
    }
#endif
}
makeZombie(playerid)
{
	if (Plr[playerid][Infected] != -1)
	{
	    Plr[playerid][Infected] = 1; //Make Zombie
	    SetPlayerColor(playerid, COLOR_GREEN);//Set Colour
    	//Set Markers For YOUR Infected
		new i = 0;
		while (i < MAX_PLAYERS)
		{
		 	if (Plr[i][Infected] == 1 && Plr[playerid][Infected] == 1)
		 	{
		 		ShowPlayerNameTagForPlayer( i, playerid, 1);
				ShowPlayerNameTagForPlayer( playerid, i, 1);
		 		SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & COLOR_GREEN ) );
		 		SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & COLOR_GREEN ) );
			} else {
		 		ShowPlayerNameTagForPlayer( i, playerid, 0);
				ShowPlayerNameTagForPlayer( playerid, i, 0);
		 		SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 		SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 	}
		 	i++;
		}
		SetPlayerHealth(playerid,0.0);//Finally Kill the person
	}
}
makeHuman(playerid)
{
	if (Plr[playerid][Infected] != -1)
	{
	    Plr[playerid][Infected] = 0; //Make Human
	    SetPlayerColor(playerid, COLOR_PINK);//Set Colour
	   	//Set Markers For YOUR Infected
		new i = 0;
		while (i < MAX_PLAYERS)
		{
			if (Plr[i][Infected] == 0 && Plr[playerid][Infected] == 0)
			{
				ShowPlayerNameTagForPlayer( i, playerid, 1);
				ShowPlayerNameTagForPlayer( playerid, i, 1);
				SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & COLOR_PINK ) );
	            SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & COLOR_PINK ) );
			} else {
		 		ShowPlayerNameTagForPlayer( i, playerid, 0);
				ShowPlayerNameTagForPlayer( playerid, i, 0);
		 		SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 		SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 	}
			i++;
		}
		SetPlayerHealth(playerid,0.0);//Finally Kill the person
	}
}
Timers_Stop()
{
	KillTimer(InfectionTimer);
	KillTimer(WarmupTimer);

}
ResetPlayer(playerid)
{
	if (Plr[playerid][Infected] == 0)
	{
	    SetPlayerColor(playerid, COLOR_PINK);//Set Colour
   		SetPlayerHealth(playerid,0.1); // No HEALTH :D
		GivePlayerWeapon(playerid, 29, 100); //SMG
		GivePlayerWeapon(playerid, 31, 100); //M4
	   	//Set Markers For YOUR Infected
		new i = 0;
		while (i < MAX_PLAYERS)
		{
			if (Plr[i][Infected] == 0 && Plr[playerid][Infected] == 0)
			{
				ShowPlayerNameTagForPlayer( i, playerid, 1);
				ShowPlayerNameTagForPlayer( playerid, i, 1);
				SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & COLOR_PINK ) );
	            SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & COLOR_PINK ) );
			} else {
		 		ShowPlayerNameTagForPlayer( i, playerid, 0);
				ShowPlayerNameTagForPlayer( playerid, i, 0);
		 		SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 		SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 	}
			i++;
		}
	}
	else if (Plr[playerid][Infected] == 1)
	{
	    SetPlayerColor(playerid, COLOR_GREEN);//Set Colour
		GivePlayerWeapon(playerid, 4, 0); // Knife
	   	//Set Markers For YOUR Infected
		new i = 0;
		while (i < MAX_PLAYERS)
		{
		 	if (Plr[i][Infected] == 1 && Plr[playerid][Infected] == 1)
		 	{
		 		ShowPlayerNameTagForPlayer( i, playerid, 1);
				ShowPlayerNameTagForPlayer( playerid, i, 1);
		 		SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & COLOR_GREEN ) );
		 		SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & COLOR_GREEN ) );
			} else {
		 		ShowPlayerNameTagForPlayer( i, playerid, 0);
				ShowPlayerNameTagForPlayer( playerid, i, 0);
		 		SetPlayerMarkerForPlayer( i, playerid, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 		SetPlayerMarkerForPlayer( playerid, i, ( GetPlayerColor( playerid ) & 0xFFFFFF00 ) );
		 	}
			i++;
		}
	}
	
	
}

//WORKING Custom From Forums
strtok( const string[], &index, const seperator[] = " " )
{
	new
		index2,
		result[ 30 ];
	index2 =  strfind(string, seperator, false, index);
	if(index2 == -1)
	{
		if(strlen(string) > index)
		{
			strmid(result, string, index, strlen(string), 30);
			index = strlen(string);
		}
		return result; // This string is empty, probably, if index came to an end
	}
	if(index2 > (index + 29))
	{
		index2 = index + 29;
		strmid(result, string, index, index2, 30);
		index = index2;
		return result;
	}
	strmid(result, string, index, index2, 30);
	index = index2 + 1;
	return result;
}
ReturnUser(text[], playerid = INVALID_PLAYER_ID)
{
	new pos = 0;
	while (text[pos] < 0x21) // Strip out leading spaces
	{
		if (text[pos] == 0) return INVALID_PLAYER_ID; // No passed text
		pos++;
	}
	new userid = INVALID_PLAYER_ID;
	if (IsNumeric(text[pos])) // Check whole passed string
	{
		// If they have a numeric name you have a problem (although names are checked on id failure)
		userid = strval(text[pos]);
		if (userid >=0 && userid < MAX_PLAYERS)
		{
			if(!IsPlayerConnected(userid))
			{
				/*if (playerid != INVALID_PLAYER_ID)
				{
					SendClientMessage(playerid, 0xFF0000AA, "User not connected");
				}*/
				userid = INVALID_PLAYER_ID;
			}
			else
			{
				return userid; // A player was found
			}
		}
		/*else
		{
			if (playerid != INVALID_PLAYER_ID)
			{
				SendClientMessage(playerid, 0xFF0000AA, "Invalid user ID");
			}
			userid = INVALID_PLAYER_ID;
		}
		return userid;*/
		// Removed for fallthrough code
	}
	// They entered [part of] a name or the id search failed (check names just incase)
	new len = strlen(text[pos]);
	new count = 0;
	new name[MAX_PLAYER_NAME];
	for (new i = 0; i < MAX_PLAYERS; i++)
	{
		if (IsPlayerConnected(i))
		{
			GetPlayerName(i, name, sizeof (name));
			if (strcmp(name, text[pos], true, len) == 0) // Check segment of name
			{
				if (len == strlen(name)) // Exact match
				{
					return i; // Return the exact player on an exact match
					// Otherwise if there are two players:
					// Me and MeYou any time you entered Me it would find both
					// And never be able to return just Me's id
				}
				else // Partial match
				{
					count++;
					userid = i;
				}
			}
		}
	}
	if (count != 1)
	{
		if (playerid != INVALID_PLAYER_ID)
		{
			if (count)
			{
				SendClientMessage(playerid, 0xFF0000AA, "Multiple users found, please narrow earch");
			}
			else
			{
				SendClientMessage(playerid, 0xFF0000AA, "No matching user found");
			}
		}
		userid = INVALID_PLAYER_ID;
	}
	return userid; // INVALID_USER_ID for bad return
}
IsNumeric(const string[])
{
	for (new i = 0, j = strlen(string); i < j; i++)
	{
	    if (string[i] > '9' || string[i] < '0') return 0;
	}
	return 1;
}
public GameModeExitFunc()

 {

	GameModeExit();

	return 1;

 }
//####################################
//#### Custom FUNCTIONS END ##########
//####################################




public OnGameModeInit()
{
	// Don't use these lines if it's a filterscript
	SetGameModeText("Zombies 0.1a");
	UsePlayerPedAnims();
	EnableTirePopping(1);
	
	
	AddPlayerClass(160,221.5132,1860.5977,13.1470,2.1131,0,0,0,0,0,0); // spawn 1 zombies
	//AddPlayerClass(162,213.8583,1860.7201,13.1406,2.1131,0,0,0,0,0,0); // spawn 2 zombies
	//AddPlayerClass(239,206.2497,1860.9045,13.1406,2.1131,0,0,0,0,0,0); // spawn 3 zombies
	//AddPlayerClass(212,217.3335,1857.8630,13.1406,9.6331,0,0,0,0,0,0); // spawn 4 zombies
	//AddPlayerClassEx(2, 160,213.4945,1854.1865,12.8745,355.8463,0,0,0,0,0,0); // spawn 5 zombies
	//AddPlayerClassEx(2, 160,223.1789,1853.9337,12.8412,2.7398,0,0,0,0,0,0); // spawn 6 zombies
	
	Players = 0;
	Zombies = 0;
	Humans = 0;
	
	new i = 0;
	while (i != MAX_PLAYERS)
	{
		Plr[i][Infected] = -1;
 		i++;
	}
	
	WarmupTimer = SetTimer("Game_Warmup",WARMUP_TIME,true);
 	return 1;
}

public OnGameModeExit()
{
	return 1;
}

//public OnPlayerRequestClass(playerid, classid)
//{
//	OnPlayerRequestSpawn(playerid);
//	return 1;
//}

public OnPlayerRequestSpawn(playerid)
{
	return 1;
}

public OnPlayerConnect(playerid)
{

    GameTextForPlayer(playerid,"~w~T-Zombies: ~r~By Daemon",2000,5);

	Plr[playerid][AdminLevel] = 0;
	Plr[playerid][Infected] = 1;
	Plr[playerid][Score] = 0;
	Plr[playerid][PosX] = 213.5430;
	Plr[playerid][PosY] = 1866.7603;
	Plr[playerid][PosZ] = 20;
	Plr[playerid][PosA] = 0.5465;

	CheckPlayers();
	return 1;
}

public OnPlayerDisconnect(playerid, reason)
{
    new pName[MAX_PLAYER_NAME];
    new string[56];
    GetPlayerName(playerid, pName, sizeof(pName));

    switch(reason)
    {
        case 0: format(string, sizeof(string), "%s has left the server. (Timeout)", pName);
        case 1: format(string, sizeof(string), "%s has left the server. (Leaving)", pName);
        case 2: format(string, sizeof(string), "%s has left the server. (Kicked)", pName);
    }

    SendClientMessageToAll(0xAAAAAAAA, string);
    
   	Plr[playerid][AdminLevel] = 0;
	Plr[playerid][Infected] = -1;
	Plr[playerid][Score] = 0;
	Plr[playerid][PosX] = 213.5430;
	Plr[playerid][PosY] = 1866.7603;
	Plr[playerid][PosZ] = 20;
	Plr[playerid][PosA] = 0.5465;
	
	CheckPlayers();
    
    return 1;
}

public OnPlayerSpawn(playerid)
{
 	if (Plr[playerid][Infected] == 1)
	{
		SetPlayerPos(playerid,Plr[playerid][PosX],Plr[playerid][PosY],Plr[playerid][PosZ]);
		SetPlayerFacingAngle(playerid, Plr[playerid][PosA]);
	}
	else if (Plr[playerid][Infected] == 0)
	{
		new iSpawn = random(3);
		// SetPlayerPos to the random spawn information
		SetPlayerPos(playerid, HumanSpawn[iSpawn][0], HumanSpawn[iSpawn][1],
		HumanSpawn[iSpawn][2]);
		// SetPlayerFacingAngle to the random facing angle information
		SetPlayerFacingAngle(playerid, HumanSpawn[iSpawn][3]);
	}
	
	ResetPlayer(playerid);
	CheckPlayers();
	
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if (Plr[killerid][Infected] == 1 && Plr[playerid][Infected] == 1)
	{
		SetPlayerScore(killerid, GetPlayerScore(killerid) - 1); // Remove For InfectedKill.
	}
	else if (Plr[killerid][Infected] == 0 && Plr[playerid][Infected] == 0)
	{
		SetPlayerScore(killerid, GetPlayerScore(killerid) - 1); // Remove For InfectedKill.
	}
	else if (Plr[killerid][Infected] == 0 && Plr[playerid][Infected] == 1)
	{
		SetPlayerScore(killerid, GetPlayerScore(killerid) + 1); // Add score if is a human kills zombie
	}
	else if (Plr[killerid][Infected] == 1 && Plr[playerid][Infected] == 0)
	{
		SetPlayerScore(killerid, GetPlayerScore(killerid) + 1); // Add score if is a zombie kills human
		makeZombie(playerid); // Set player a zombie :D
	}
	
	GetPlayerPos(playerid,x,y,z);
	GetPlayerFacingAngle(playerid,a);
	Plr[playerid][PosX] = x;
	Plr[playerid][PosY] = y;
	Plr[playerid][PosZ] = z;
	Plr[playerid][PosA] = a;
	
	CheckPlayers();
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	return 1;
}

public OnPlayerText(playerid, text[])
{
	return 1;
}

public OnPlayerPrivmsg(playerid, recieverid, text[])
{
	return 1;
}

public OnPlayerCommandText(playerid, cmdtext[])
{
	if (strcmp("/credits", cmdtext, true, 10) == 0)
	{
		// Do something here
		return 1;
	}
	if (strcmp("/playerinfo", cmdtext, true, 10) == 0)
	{
		if (IsPlayerAdmin(playerid)) // Level 1 skill
		{
			CheckPlayers();
			SendClientMessage(playerid, 0xE60000FF, "###~~Player Information~~###");
			format(fstring, sizeof(fstring), "Players: %d", Players);
			SendClientMessage(playerid, 0xE60000FF, fstring);
			format(fstring, sizeof(fstring), "Humans: %d", Humans);
			SendClientMessage(playerid, 0xE60000FF, fstring);
			format(fstring, sizeof(fstring), "Zombies: %d", Zombies);
			SendClientMessage(playerid, 0xE60000FF, fstring);
		}
		else if (Plr[playerid][AdminLevel] < 0)
		{
			SendClientMessage(playerid, 0xE60000FF, "You are not a high enough level admin!");
		}
		else
		{
			SendClientMessage(playerid, 0xE60000FF, "You are not an admin!");
		}
		return 1;
	}
	if (strcmp("/restart", cmdtext, true, 10) == 0)
	{
		if (IsPlayerAdmin(playerid)) // Level 3 skill
		{
			Game_Warmup();
		}
		else if (Plr[playerid][AdminLevel] < 4)
		{
			SendClientMessage(playerid, 0xE60000FF, "You are not a high enough level admin!");
		}
		else
		{
			SendClientMessage(playerid, 0xE60000FF, "You are not an admin!");
		}
		return 1;
	}
	if (strcmp("/human", cmdtext, true, 10) == 0)
	{
		if (IsPlayerAdmin(playerid)) // Level 3 skill
		{
			makeHuman(playerid);
		}
		else if (Plr[playerid][AdminLevel] < 3)
		{
			SendClientMessage(playerid, 0xE60000FF, "You are not a high enough level admin!");
		}
		else
		{
			SendClientMessage(playerid, 0xE60000FF, "You are not an admin!");
		}
		return 1;
	}
	if (strcmp("/zombie", cmdtext, true, 10) == 0)
	{
		if (IsPlayerAdmin(playerid)) // Level 3 skill
       {
			makeZombie(playerid);
       }
		else if (Plr[playerid][AdminLevel] < 3)
       {
           SendClientMessage(playerid, 0xE60000FF, "You are not a high enough level admin!");
       }
		else
		{
		    SendClientMessage(playerid, 0xE60000FF, "You are not an admin!");
		}
		return 1;
	}
	if(strcmp(cmdtext, "/randomzombie", true) == 0)
	{
	       if (IsPlayerAdmin(playerid)) // Level 2,3,4,5 Skill
	       {
				new newZombie = 0;
				while (newZombie != 1)
				{
					new zombie = random(MAX_PLAYERS);
					if (Plr[zombie][Infected] != -1)
					{
						if (Plr[zombie][Infected] == 1)
						{
					    	SendClientMessage(playerid, 0xE60000FF, "An Admin Just made you a zombie.");
					    	makeZombie(playerid);
					    	newZombie = 1;
					    }
					}
				}
	       }
	       else if (Plr[playerid][AdminLevel] < 1)
	       {
	           SendClientMessage(playerid, 0xE60000FF, "You are not a high enough level admin!");
	       }
			else
			{
			    SendClientMessage(playerid, 0xE60000FF, "You are not an admin!");
			}
	       return 1;
	}
	new cmd[256];
	if(strcmp(cmd, "/makeadmin", true) == 0)
	{
	       new string[128];
	       new tmp[256],idx;
	       new player[MAX_PLAYER_NAME], giveplayer[MAX_PLAYER_NAME];
	       new giveplayerid;
	       if (IsPlayerAdmin(playerid))
	       {
	               tmp = strtok(cmdtext, idx);
	               if(!strlen(tmp))
	               {
	                       SendClientMessage(playerid, COLOR_ORANGE, "USAGE: /makeadmin [playerid] [level]");
	                       SendClientMessage(playerid, COLOR_ORANGE, "FUNCTION: Player will be an admin.");
	                       return 1;
	               }
	               giveplayerid = ReturnUser(tmp);
	               tmp = strtok(cmdtext, idx);
	               new level = strval(tmp);
	               if(giveplayerid != INVALID_PLAYER_ID)
	               {
	                       GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
	                       GetPlayerName(playerid, player, sizeof(player));
	                       Plr[giveplayerid][AdminLevel] = level;
	                       printf("Admin %s made %s a level %d admin.", player, giveplayer, level);
	                       format(string, sizeof(string), "You are now an administrator level %d thanks to %s.", level,  player);
	                       SendClientMessage(giveplayerid, 0x00C2ECFF, string);
	                       format(string, sizeof(string), "You have given %s level %d admin.",  giveplayer,Plr[giveplayerid][AdminLevel]);
						   SendClientMessage(playerid, 0x00C2ECFF, string);
	               }
	               else if(giveplayerid != INVALID_PLAYER_ID)
	               {
	                       format(string, sizeof(string), "%i is not an active player.", giveplayerid);
	                       SendClientMessage(playerid, 0xE60000FF, string);
	               }
	       }
	       else
	       {
	           SendClientMessage(playerid, 0xE60000FF, "You are not a lead admin!");
	       }
	       return 1;
	}

	
	return 0;
}

public OnPlayerInfoChange(playerid)
{
	return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	return 1;
}

public OnPlayerEnterCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveCheckpoint(playerid)
{
	return 1;
}

public OnPlayerEnterRaceCheckpoint(playerid)
{
	return 1;
}

public OnPlayerLeaveRaceCheckpoint(playerid)
{
	return 1;
}

public OnRconCommand(cmd[])
{
	return 1;
}

public OnObjectMoved(objectid)
{
	return 1;
}

public OnPlayerObjectMoved(playerid, objectid)
{
	return 1;
}

public OnPlayerPickUpPickup(playerid, pickupid)
{
	return 1;
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	return 1;
}

